﻿/*
chrome://extensions/shortcuts 为插件设置快捷键
https://developer.chrome.com/extensions/manifest  谷歌插件开发教程
https://juejin.cn/post/6970912734086955045#heading-9 飞书技术团队(2021-06-07)
http://open.chrome.360.cn/extension_dev/content_scripts.html   360团队文档
https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html  Chrome插件(扩展)开发全攻略

https://blog.csdn.net/weixin_39757743/article/details/110602663 react+antd开发(2020-11-28)
https://blog.csdn.net/qq_35606400/article/details/123183420 vue3开发谷歌插件(2022-02-28)

chrome://version/  即可得到当前浏览器的一些信息
个人资料路径下的Extensions即为插件的安装目录;

~/Library/Application Support/Google/Chrome/Default/Extensions  mac电脑位置 2023年06月19日14:01:02
~/Library/Application\ Support/Google/Chrome/Default/Extensions  open这个路径可以快速打开文件夹

chrome://chrome-urls  列出所有可用的 Chrome 内部 URL
chrome://sync-internals/ 查看 Chrome 同步状态

C:\Users\zhuge\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings

*/

/*
https://unpkg.com/vue@3.3.11/dist/vue.global.js  2023年12月09日17:41:28
https://unpkg.com/element-plus@2.4.3/dist/index.css
https://unpkg.com/element-plus@2.4.3/dist/index.full.min.js
*/

// 下面是带有chrome的代码摘录 2023年10月04日22:17:27
// chrome-extension://chphlpgkkbolifaimnlloiipkdnihall/onetab.html
// chrome-extension://chphlpgkkbolifaimnlloiipkdnihall/ext-onetab-concatenated-sources-onetab.js
/*
async function Qe() {
  try {
    await chrome.tabs.update((await chrome.tabs.getCurrent()).id, {
      autoDiscardable: !1
    })
  } catch (e) {
    console.log(e)
  }
}


async function He(e, o={}) {
  if (!pe) {
    const i = async()=>{
      if ((await chrome.runtime.sendMessage({
        args: [],
        type: Ke.U,
        L: !0
      }))?.result?.pong !== String(Ce))
        throw new Error
    }
    ;


chrome.runtime.onMessage.addListener((o,t,i)=>{
    o.type === "stateChange" && e(o.F)
  }


chrome.runtime.getURL("onetab.html")
  , ye = we.substring(0, we.length - "onetab.html".length);
let X = !0;
async function ut() {
  return X ? (await chrome.permissions.getAll()).permissions.includes("tabGroups") && chrome.tabGroups : !1
}
async function xe() {
  if (!X)
    return !1;
  try {
    return await chrome.permissions.request({
      permissions: ["tabGroups"]
    })
  } catch (e) {
    return console.log('chrome.permissions.request for "tabGroups" permission failed with error:'),
    console.log(e),
    !1
  }

chrome.i18n.getMessage(e);

return !await chrome.extension.isAllowedFileSchemeAccess()

class Ao {
  async put(o, t) {
    await chrome.storage.local.set({
      [o]: t
    })
  }
  async get(o) {
    return (await chrome.storage.local.get([o]))[o]
  }
  async remove(o) {
    return await chrome.storage.local.remove(o)
  }
}


class So {
  async put(o, t) {
    await chrome.storage.session.set({
      [o]: t
    })
  }
  async get(o) {
    return (await chrome.storage.session.get([o]))[o]
  }
  async getAll() {
    return await chrome.storage.session.get(null)
  }
  async remove(o) {
    return await chrome.storage.session.remove(o)
  }
  async clearAll() {
    await chrome.storage.session.clear()
  }
}

const Po = chrome.storage.session ? new So : new Do;

o && o.id !== e.id ? (await chrome.tabs.update(e.id, {
    active: !0
  }),
  await chrome.tabs.update(o.id, {
    active: !0
  })) : console.log("No active tab found")


function ze(e) {
  const o = new URL(chrome.runtime.getURL("/_favicon/"));
  return o.searchParams.set("pageUrl", e),
  o.searchParams.set("size", "32"),
  o.toString()
}

if (!await h.ka((await chrome.tabs.getCurrent()).id)) {
    ae = (await chrome.permissions.getAll()).permissions.includes("favicon");

chrome.runtime.onMessage.addListener((e,o,t)=>{
*/

// ==========================================
// 记录下谷歌的一下数据操作 2023年10月04日22:20:52
/*
// 读取本地存储中的数据
chrome.storage.local.get(['myKey'], (result) => {
  console.log(result.myKey); // 打印本地存储中的数据
});

// 向本地存储中添加数据
chrome.storage.local.set({ myKey: 'myValue' }, () => {
  console.log('数据已成功添加到本地存储');
});

chrome.storage.local.get() 方法返回的对象：这是一个包含所有存储的键值对的对象。
chrome.storage.local.get(key) 方法返回的对象：这是一个包含指定键的值的单个对象。
chrome.storage.local.set() 方法传递的对象：这是一个包含要添加到本地存储的键值对的对象。
chrome.storage.local.onChanged.addListener() 方法注册的回调函数：当本地存储中的键值对发生变化时，将触发此回调函数。
chrome.storage.local.onChanged.removeListener() 方法：用于从回调函数中删除监听器。

chrome.storage.local.get(['myKey'], (result) => {
 console.log(result.myKey); // 打印 myKey 键的值
});
chrome.storage.local.get(['myKey']).then((result) => {
 console.log(result.myKey); // 打印 myKey 键的值
}).catch((error) => {
  console.error('获取存储数据时出现错误:', error);
});

chrome.storage.local.set({
  myKey: 'myValue'
});
chrome.storage.local.set({
  myKey: 'myValue'
}, () => {
  console.log('存储数据已成功添加到本地存储');
});
*/
// ==========================================
